diff --git a/.vscode/launch.json b/.vscode/launch.json index f1bba173..22bf81c1 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -70,6 +70,13 @@ "mode": "test", "program": "${workspaceFolder}/timing" }, + { + "name": "Test gitlab.com/akita/gcn3/timing/cu", + "type": "go", + "request": "launch", + "mode": "test", + "program": "${workspaceFolder}/timing/cu" + }, { "name": "Test gitlab.com/akita/gcn3/timing/caches/l1v", "type": "go", @@ -220,6 +227,7 @@ "program": "${workspaceFolder}/samples/concurrentkernel", "args": [ "-timing", + "-verify" ] }, { diff --git a/go.mod b/go.mod index 2633bd93..881612ef 100644 --- a/go.mod +++ b/go.mod @@ -2,39 +2,39 @@ module github.com/sarchlab/mgpusim/v3 require ( github.com/disintegration/imaging v1.6.2 - github.com/fatih/color v1.15.0 + github.com/fatih/color v1.16.0 github.com/golang/mock v1.6.0 - github.com/gorilla/mux v1.8.0 - github.com/onsi/ginkgo/v2 v2.13.0 - github.com/onsi/gomega v1.27.10 + github.com/gorilla/mux v1.8.1 + github.com/onsi/ginkgo/v2 v2.13.2 + github.com/onsi/gomega v1.30.0 github.com/rs/xid v1.5.0 - github.com/sarchlab/akita/v3 v3.0.0-alpha.30 + github.com/sarchlab/akita/v3 v3.0.0-alpha.31 github.com/tebeka/atexit v0.3.0 - gonum.org/v1/gonum v0.13.0 + gonum.org/v1/gonum v0.14.0 ) require ( - github.com/go-logr/logr v1.2.4 // indirect - github.com/go-ole/go-ole v1.2.6 // indirect + github.com/go-logr/logr v1.3.0 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-sql-driver/mysql v1.7.1 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect - github.com/google/go-cmp v0.5.9 // indirect - github.com/google/pprof v0.0.0-20230602150820-91b7bce49751 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/google/pprof v0.0.0-20231205033806-a5a03c77bf08 // indirect github.com/kr/text v0.2.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.19 // indirect - github.com/mattn/go-sqlite3 v1.14.17 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-sqlite3 v1.14.18 // indirect github.com/shirou/gopsutil v3.21.11+incompatible // indirect github.com/stretchr/testify v1.7.0 // indirect github.com/syifan/goseth v0.1.1 // indirect - github.com/tklauser/go-sysconf v0.3.11 // indirect - github.com/tklauser/numcpus v0.6.1 // indirect + github.com/tklauser/go-sysconf v0.3.13 // indirect + github.com/tklauser/numcpus v0.7.0 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect - golang.org/x/image v0.8.0 // indirect - golang.org/x/net v0.17.0 // indirect - golang.org/x/sys v0.13.0 // indirect - golang.org/x/text v0.13.0 // indirect - golang.org/x/tools v0.12.0 // indirect + golang.org/x/image v0.14.0 // indirect + golang.org/x/net v0.19.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/text v0.14.0 // indirect + golang.org/x/tools v0.16.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 8416405f..f6b95e74 100644 --- a/go.sum +++ b/go.sum @@ -4,12 +4,13 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1ei82L+c= github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4= -github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= -github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= @@ -17,12 +18,12 @@ github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4 github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/pprof v0.0.0-20230602150820-91b7bce49751 h1:hR7/MlvK23p6+lIw9SN1TigNLn9ZnF3W4SYRKq2gAHs= -github.com/google/pprof v0.0.0-20230602150820-91b7bce49751/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= -github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/pprof v0.0.0-20231205033806-a5a03c77bf08 h1:PxlBVtIFHR/mtWk2i0gTEdCz+jBnqiuHNSki0epDbVs= +github.com/google/pprof v0.0.0-20231205033806-a5a03c77bf08/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -32,20 +33,20 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= -github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-sqlite3 v1.14.17 h1:mCRHCLDUBXgpKAqIKsaAaAsrAlbkeomtRFKXh2L6YIM= -github.com/mattn/go-sqlite3 v1.14.17/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= -github.com/onsi/ginkgo/v2 v2.13.0 h1:0jY9lJquiL8fcf3M4LAXN5aMlS/b2BV86HFFPCPMgE4= -github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= -github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= -github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-sqlite3 v1.14.18 h1:JL0eqdCOq6DJVNPSvArO/bIV9/P7fbGrV00LZHc+5aI= +github.com/mattn/go-sqlite3 v1.14.18/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= +github.com/onsi/ginkgo/v2 v2.13.2 h1:Bi2gGVkfn6gQcjNjZJVO8Gf0FHzMPf2phUei9tejVMs= +github.com/onsi/ginkgo/v2 v2.13.2/go.mod h1:XStQ8QcGwLyF4HdfcZB8SFOS/MWCgDuXMSBe6zrvLgM= +github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8= +github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc= github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/sarchlab/akita/v3 v3.0.0-alpha.30 h1:OCqkElBsvRQAWRFB8+m1D4EOq3syX1FspJZgurt5a1U= -github.com/sarchlab/akita/v3 v3.0.0-alpha.30/go.mod h1:gZdVVkNHMuF7vAQdOsa2KoU174zSd4mmbrPothtDQE8= +github.com/sarchlab/akita/v3 v3.0.0-alpha.31 h1:nBGOQbZEm1E89O8ajFHIKj7xzHEDJvPPFwpV0y7XhdQ= +github.com/sarchlab/akita/v3 v3.0.0-alpha.31/go.mod h1:p74MfNeElTYFy9H/gwsPzZQXPfw/e87/6HiIYCZexWc= github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -57,76 +58,54 @@ github.com/syifan/goseth v0.1.1 h1:nLkLsO4nO+fPEZMc6blzDHjQOadWEldEUUtwzXn3DDg= github.com/syifan/goseth v0.1.1/go.mod h1:ZEJbYajt2wLV8Vx27sDzpobh8YlqNI6VljTlOK5rBPM= github.com/tebeka/atexit v0.3.0 h1:jleL99H7Ywt80oJKR+VWmJNnezcCOG0CuzcN3CIpsdI= github.com/tebeka/atexit v0.3.0/go.mod h1:WJmSUSmMT7WoR7etUOaGBVXk+f5/ZJ+67qwuedq7Fbs= -github.com/tklauser/go-sysconf v0.3.11 h1:89WgdJhk5SNwJfu+GKyYveZ4IaJ7xAkecBo+KdJV0CM= -github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI= -github.com/tklauser/numcpus v0.6.0/go.mod h1:FEZLMke0lhOUG6w2JadTzp0a+Nl8PF/GFkQ5UVIcaL4= -github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= -github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/tklauser/go-sysconf v0.3.13 h1:GBUpcahXSpR2xN01jhkNAbTLRk2Yzgggk8IM08lq3r4= +github.com/tklauser/go-sysconf v0.3.13/go.mod h1:zwleP4Q4OehZHGn4CYZDipCgg9usW5IJePewFCGVEa0= +github.com/tklauser/numcpus v0.7.0 h1:yjuerZP127QG9m5Zh/mSO4wqurYil27tHrqwRoRjpr4= +github.com/tklauser/numcpus v0.7.0/go.mod h1:bb6dMVcj8A42tSE7i32fsIUCbQNllK5iDguyOZRUzAY= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.8.0 h1:agUcRXV/+w6L9ryntYYsF2x9fQTMd4T8fiiYXAVW6Jg= -golang.org/x/image v0.8.0/go.mod h1:PwLxp3opCYg4WR2WO9P0L6ESnsD6bLTWcw8zanLMVFM= +golang.org/x/image v0.14.0 h1:tNgSxAFe3jC4uYqvZdTr84SZoM1KfwdC9SKIFrLjFn4= +golang.org/x/image v0.14.0/go.mod h1:HUYqC05R2ZcZ3ejNQsIHQDQiwWM4JBqmm6MKANTp4LE= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.12.0 h1:YW6HUoUmYBpwSgyaGaZq1fHjrBjX1rlpZ54T6mu2kss= -golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= +golang.org/x/tools v0.16.0 h1:GO788SKMRunPIBCXiQyo2AaexLstOrVhuAL5YwsckQM= +golang.org/x/tools v0.16.0/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.13.0 h1:a0T3bh+7fhRyqeNbiC3qVHYmkiQgit3wnNan/2c0HMM= -gonum.org/v1/gonum v0.13.0/go.mod h1:/WPYRckkfWrhWefxyYTfrTtQR0KH4iyHNuzxqXAKyAU= +gonum.org/v1/gonum v0.14.0 h1:2NiG67LD1tEH0D7kM+ps2V+fXmsAnpUeec7n8tcr4S0= +gonum.org/v1/gonum v0.14.0/go.mod h1:AoWeoz0becf9QMWtE8iWXNXc27fK4fNeHNf/oMejGfU= google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= diff --git a/samples/runner/emugpubuilder.go b/samples/runner/emugpubuilder.go index adfb3ab2..acc002b8 100644 --- a/samples/runner/emugpubuilder.go +++ b/samples/runner/emugpubuilder.go @@ -155,11 +155,12 @@ func (b *EmuGPUBuilder) buildComputeUnits() { } func (b *EmuGPUBuilder) buildMemory() { - b.gpuMem = idealmemcontroller.New( - b.gpuName+".GlobalMem", b.engine, b.memCapacity) - b.gpuMem.Freq = 1 * sim.GHz - b.gpuMem.Latency = 1 - b.gpuMem.Storage = b.storage + b.gpuMem = idealmemcontroller.MakeBuilder(). + WithEngine(b.engine). + WithFreq(1 * sim.GHz). + WithStorage(b.storage). + WithLatency(1). + Build(b.gpuName + ".GlobalMem") if b.enableMemTracing { file, _ := os.Create("mem.trace") diff --git a/samples/runner/r9nanobuilder.go b/samples/runner/r9nanobuilder.go index a0d3a23d..1c59aeb2 100644 --- a/samples/runner/r9nanobuilder.go +++ b/samples/runner/r9nanobuilder.go @@ -656,7 +656,7 @@ func (b *R9NanoGPUBuilder) populateCUs(sa *shaderArray) { } } for _, cu := range sa.cus { - for _, simd := range cu.SIMDUnit { + for _, simd := range cu.SIMDUnits { b.gpu.SIMDs = append(b.gpu.SIMDs, simd.(TraceableComponent)) } } diff --git a/tests/acceptance/cases.go b/tests/acceptance/cases.go index 8a7a23e0..006f4453 100644 --- a/tests/acceptance/cases.go +++ b/tests/acceptance/cases.go @@ -801,18 +801,18 @@ var benchmarks = []benchmark{ {gpus: []int{1, 2, 3, 4}, timing: true, parallel: true, unifiedGPU: true, unifiedMemory: true}, }, }, - { - benchmarkPath: "", - executablePath: "../../samples/concurrentkernel", - executable: "concurrentkernel", - sizeArgs: []string{}, - cases: []benchmarkCase{ - {gpus: []int{1}, timing: false, parallel: false, unifiedGPU: false, unifiedMemory: false}, - {gpus: []int{1}, timing: false, parallel: true, unifiedGPU: false, unifiedMemory: false}, - {gpus: []int{1}, timing: true, parallel: false, unifiedGPU: false, unifiedMemory: false}, - {gpus: []int{1}, timing: true, parallel: true, unifiedGPU: false, unifiedMemory: false}, - }, - }, + // { + // benchmarkPath: "", + // executablePath: "../../samples/concurrentkernel", + // executable: "concurrentkernel", + // sizeArgs: []string{}, + // cases: []benchmarkCase{ + // {gpus: []int{1}, timing: false, parallel: false, unifiedGPU: false, unifiedMemory: false}, + // {gpus: []int{1}, timing: false, parallel: true, unifiedGPU: false, unifiedMemory: false}, + // {gpus: []int{1}, timing: true, parallel: false, unifiedGPU: false, unifiedMemory: false}, + // {gpus: []int{1}, timing: true, parallel: true, unifiedGPU: false, unifiedMemory: false}, + // }, + // }, { benchmarkPath: "", executablePath: "../../samples/concurrentworkload", diff --git a/timing/cu/computeunit.go b/timing/cu/computeunit.go index d6d8f2a1..a0898133 100644 --- a/timing/cu/computeunit.go +++ b/timing/cu/computeunit.go @@ -40,10 +40,9 @@ type ComputeUnit struct { VectorMemDecoder SubComponent VectorMemUnit SubComponent ScalarDecoder SubComponent - VectorDecoder SubComponent LDSDecoder SubComponent ScalarUnit SubComponent - SIMDUnit []SubComponent + SIMDUnits []SubComponent LDSUnit SubComponent SRegFile RegisterFile VRegFile []RegisterFile @@ -131,10 +130,9 @@ func (cu *ComputeUnit) runPipeline(now sim.VTimeInSec) bool { madeProgress = cu.BranchUnit.Run(now) || madeProgress madeProgress = cu.ScalarUnit.Run(now) || madeProgress madeProgress = cu.ScalarDecoder.Run(now) || madeProgress - for _, simdUnit := range cu.SIMDUnit { + for _, simdUnit := range cu.SIMDUnits { madeProgress = simdUnit.Run(now) || madeProgress } - madeProgress = cu.VectorDecoder.Run(now) || madeProgress madeProgress = cu.LDSUnit.Run(now) || madeProgress madeProgress = cu.LDSDecoder.Run(now) || madeProgress madeProgress = cu.VectorMemUnit.Run(now) || madeProgress @@ -284,11 +282,10 @@ func (cu *ComputeUnit) flushInternalComponents() { cu.ScalarUnit.Flush() cu.ScalarDecoder.Flush() - for _, simdUnit := range cu.SIMDUnit { + for _, simdUnit := range cu.SIMDUnits { simdUnit.Flush() } - cu.VectorDecoder.Flush() cu.LDSUnit.Flush() cu.LDSDecoder.Flush() cu.VectorMemDecoder.Flush() diff --git a/timing/cu/computeunit_test.go b/timing/cu/computeunit_test.go index 435f597a..d6bb294e 100644 --- a/timing/cu/computeunit_test.go +++ b/timing/cu/computeunit_test.go @@ -73,7 +73,6 @@ var _ = Describe("ComputeUnit", func() { vectorMemDecoder *MockSubComponent vectorMemUnit *MockSubComponent scalarDecoder *MockSubComponent - vectorDecoder *MockSubComponent ldsDecoder *MockSubComponent scalarUnit *MockSubComponent simdUnit *MockSubComponent @@ -96,7 +95,6 @@ var _ = Describe("ComputeUnit", func() { vectorMemDecoder = NewMockSubComponent(mockCtrl) vectorMemUnit = NewMockSubComponent(mockCtrl) scalarDecoder = NewMockSubComponent(mockCtrl) - vectorDecoder = NewMockSubComponent(mockCtrl) ldsDecoder = NewMockSubComponent(mockCtrl) scalarUnit = NewMockSubComponent(mockCtrl) simdUnit = NewMockSubComponent(mockCtrl) @@ -114,10 +112,9 @@ var _ = Describe("ComputeUnit", func() { cu.VectorMemDecoder = vectorMemDecoder cu.VectorMemUnit = vectorMemUnit cu.ScalarDecoder = scalarDecoder - cu.VectorDecoder = vectorDecoder cu.LDSDecoder = ldsDecoder cu.ScalarUnit = scalarUnit - cu.SIMDUnit = append(cu.SIMDUnit, simdUnit) + cu.SIMDUnits = append(cu.SIMDUnits, simdUnit) cu.LDSUnit = ldsUnit @@ -530,7 +527,6 @@ var _ = Describe("ComputeUnit", func() { scalarUnit.EXPECT().Flush() scalarDecoder.EXPECT().Flush() simdUnit.EXPECT().Flush() - vectorDecoder.EXPECT().Flush() ldsUnit.EXPECT().Flush() ldsDecoder.EXPECT().Flush() vectorMemDecoder.EXPECT().Flush() diff --git a/timing/cu/cubuilder.go b/timing/cu/cubuilder.go index 5df0a6ec..6c766d43 100644 --- a/timing/cu/cubuilder.go +++ b/timing/cu/cubuilder.go @@ -136,16 +136,13 @@ func (b *Builder) equipScalarUnits(cu *ComputeUnit) { } func (b *Builder) equipSIMDUnits(cu *ComputeUnit) { - vectorDecoder := NewDecodeUnit(cu) - cu.VectorDecoder = vectorDecoder for i := 0; i < b.simdCount; i++ { name := fmt.Sprintf(b.name+".SIMD%d", i) simdUnit := NewSIMDUnit(cu, name, b.scratchpadPreparer, b.alu) if b.enableVisTracing { tracing.CollectTrace(simdUnit, b.visTracer) } - vectorDecoder.AddExecutionUnit(simdUnit) - cu.SIMDUnit = append(cu.SIMDUnit, simdUnit) + cu.SIMDUnits = append(cu.SIMDUnits, simdUnit) } } diff --git a/timing/cu/scheduler.go b/timing/cu/scheduler.go index d4383c1f..23163c46 100644 --- a/timing/cu/scheduler.go +++ b/timing/cu/scheduler.go @@ -173,7 +173,7 @@ func (s *SchedulerImpl) DoIssue(now sim.VTimeInSec) bool { continue } - unit := s.getUnitToIssueTo(wf.InstToIssue.ExeUnit) + unit := s.getUnitToIssueTo(wf.InstToIssue.ExeUnit, wf.SIMDID) if unit.CanAcceptWave() { wf.SetDynamicInst(wf.InstToIssue) wf.InstToIssue = nil @@ -182,7 +182,6 @@ func (s *SchedulerImpl) DoIssue(now sim.VTimeInSec) bool { unit.AcceptWave(wf, now) wf.State = wavefront.WfRunning - //s.removeStaleInstBuffer(wf) madeProgress = true } @@ -196,21 +195,23 @@ func (s *SchedulerImpl) issueToInternal(wf *wavefront.Wavefront, now sim.VTimeIn wf.InstToIssue = nil s.internalExecuting = append(s.internalExecuting, wf) wf.State = wavefront.WfRunning - //s.removeStaleInstBuffer(wf) s.cu.logInstTask(now, wf, wf.DynamicInst(), false) return true } -func (s *SchedulerImpl) getUnitToIssueTo(u insts.ExeUnit) SubComponent { +func (s *SchedulerImpl) getUnitToIssueTo( + u insts.ExeUnit, + SIMDID int, +) SubComponent { switch u { case insts.ExeUnitBranch: return s.cu.BranchUnit case insts.ExeUnitLDS: return s.cu.LDSDecoder case insts.ExeUnitVALU: - return s.cu.VectorDecoder + return s.cu.SIMDUnits[SIMDID] case insts.ExeUnitVMem: return s.cu.VectorMemDecoder case insts.ExeUnitScalar: diff --git a/timing/cu/scheduler_test.go b/timing/cu/scheduler_test.go index a9df16f6..649f53cd 100644 --- a/timing/cu/scheduler_test.go +++ b/timing/cu/scheduler_test.go @@ -65,7 +65,7 @@ var _ = Describe("Scheduler", func() { branchUnit *mockCUComponent ldsDecoder *mockCUComponent vectorMemDecoder *mockCUComponent - vectorDecoder *mockCUComponent + simdUnit *mockCUComponent scalarDecoder *mockCUComponent scheduler *SchedulerImpl fetchArbitor *mockWfArbitor @@ -84,8 +84,6 @@ var _ = Describe("Scheduler", func() { cu.WfPools = make([]*WavefrontPool, 1) cu.WfPools[0] = NewWavefrontPool(10) - vectorDecoder = new(mockCUComponent) - cu.VectorDecoder = vectorDecoder scalarDecoder = new(mockCUComponent) cu.ScalarDecoder = scalarDecoder branchUnit = new(mockCUComponent) @@ -93,6 +91,8 @@ var _ = Describe("Scheduler", func() { vectorMemDecoder = new(mockCUComponent) cu.VectorMemDecoder = vectorMemDecoder ldsDecoder = new(mockCUComponent) + simdUnit = new(mockCUComponent) + cu.SIMDUnits = []SubComponent{simdUnit} cu.LDSDecoder = ldsDecoder cu.VRegFile = append(cu.VRegFile, NewSimpleRegisterFile(16384, 1024)) cu.VRegFile = append(cu.VRegFile, NewSimpleRegisterFile(16384, 1024)) @@ -154,7 +154,6 @@ var _ = Describe("Scheduler", func() { scheduler.DoFetch(10) - //Expect(cu.inFlightMemAccess).To(HaveLen(0)) Expect(wf.IsFetching).To(BeFalse()) }) @@ -169,8 +168,8 @@ var _ = Describe("Scheduler", func() { } branchUnit.canAccept = true ldsDecoder.canAccept = true - vectorDecoder.canAccept = true vectorMemDecoder.canAccept = true + simdUnit.canAccept = true scalarDecoder.canAccept = false for i := 0; i < 5; i++ { @@ -192,7 +191,6 @@ var _ = Describe("Scheduler", func() { Expect(len(branchUnit.acceptedWave)).To(Equal(1)) Expect(len(ldsDecoder.acceptedWave)).To(Equal(1)) - Expect(len(vectorDecoder.acceptedWave)).To(Equal(1)) Expect(len(vectorMemDecoder.acceptedWave)).To(Equal(1)) Expect(len(scalarDecoder.acceptedWave)).To(Equal(0))