Commit Graph

237 Commits

Author SHA1 Message Date
Ben Sander 0c8ca4b37d Add initial context implementation.
APIs: hipInit, hipCtxCreate.
Track TLS default ctx.  Set deviceID now changes the ctx.
Add first context test.

Change-Id: If1cb9989b5a04a36147e25e84904336c7b6f3d88


[ROCm/clr commit: f19f2248bf]
2016-08-08 17:49:02 -05:00
Ben Sander c85f34bf8a Code cleanup, use camelCase where appropriate.
Change-Id: I5a7ec50df8bbb3e7a3b313c0b12e2dd55ae4a09c


[ROCm/clr commit: ac173c3ae8]
2016-08-08 14:54:38 -05:00
Ben Sander e6dd8281d0 Move copy kernel templates into hip_memory.cpp
Change-Id: I862529f3fa8232372c6bacaa5d36f035bbdd32a1


[ROCm/clr commit: 6dbe554894]
2016-08-08 12:07:12 -05:00
Ben Sander 3ee6e7f8ab Split ihipCtx_t into ihipCtx_t and ihipDevice_t .
Major change to existing code base.
    Ctx holds streams, enables peers, and flags.
    Device holds accelerator, hsa-agent, device props.

Add hipCtx_t.

Add peer APIs that accept hipCtx_t (in addition to deviceId)

Compiles and passes directed tests.

Change-Id: Iddab1eb9edbf90caad2ef5959c6b811d658197f1


[ROCm/clr commit: d09b19bb6c]
2016-08-08 11:55:57 -05:00
Ben Sander e5300e2b40 Change Device->Ctx
Change ihipDevice_t -> ihipCtx_t (new)
Change ihipGetTlsDefaultDevice->ihipGetTlsDefaultCtx
Some other changes from device->ctx where appropriate.

Change-Id: I5c4ae93b2fd42c6303aa23d748eb166b7431925d


[ROCm/clr commit: 0d16565061]
2016-08-07 21:47:12 -05:00
Ben Sander aa43c9e006 Remove ihipStream_r::_device_index
Replace with direct pointer to device.  Cleaner, and prep
for transition to contexts.

Change-Id: I0e550f34412923d46c541c0a14bb7d29c3fd4b11


[ROCm/clr commit: 3c604b6430]
2016-08-07 20:47:06 -05:00
Rahul Garg 7b7f9dab90 Region based apis to pool based api changes
Change-Id: If53019eebafe051ab4e811863995f78315297080


[ROCm/clr commit: 52712e2134]
2016-08-05 15:05:57 +05:30
Ben Sander ffd5a709f6 Remove faulty assert for kernelCnt==0
Change-Id: I8a925c95f48e857c0a31f44561499e90dc6df552


[ROCm/clr commit: bb005d1755]
2016-08-01 13:38:47 -05:00
Aditya Atluri 33f459c541 Signal Fix: The signals in a stream are re-used
1. Before, the signal pool is increased depending on the usage
2. After, a static number of signals are allocated to the pool
Only these are used by hip in a stream
3. If the signals required are more than the pool size, the
stream has to wait to make sure all the signals are available
4. Once they are available, the stream can use them
5. Removed HIP_NUM_SIGNALS_PER_STREAM because of redundancy with HIP_STREAM_SIGNALS
6. Increased signal count from 2 to 32.
Future Work: Dynamically increase the pool size depending on the number of
streams allocated by the application. And, null stream should have more signals

Change-Id: I6be36e084f26bb04766fabf776c7210aee0f9e91


[ROCm/clr commit: 9c7ee12822]
2016-07-28 23:01:35 -05:00
Ben Sander 381f67e067 Remove dead enqueueBarrier function.
Change-Id: Ib18fe6bd96ce24dbeb342961ddb5721f7d03f2b2


[ROCm/clr commit: f7ab82cb39]
2016-07-28 22:48:22 -05:00
Ben Sander a853d10446 Cleanup sync code.
Remove dead depFutures, enqueueBarrier call.
Rename some parms to reflect usage.
Add comments to better explain tricky parts of sync code.

Change-Id: I763296421d9c2b3b58fc8cef5f010b12ab49553c


[ROCm/clr commit: ef61aae878]
2016-07-27 18:31:11 -05:00
Ben Sander 058e927c9b Fix API string message for hipDeviceGetAttribute
Change-Id: I30f54627630c8ee835506be8c9921742bb68a43a


[ROCm/clr commit: f5118ce3cd]
2016-07-27 16:18:14 -05:00
Aditya Atluri 96fe085832 Signal Fix: Added signal limit to allocSignal
1. Did not change the logic in allocSignal
2. Added guard to wait on signal limit

Change-Id: I78f29097e6a584b3c3d78319dac19869067bd1fe


[ROCm/clr commit: 1b2a24d0b8]
2016-07-27 13:48:49 -05:00
Aditya Atluri b99410bd07 Signal Fix: Moved kernel count to critical stream
1. Added environment variable HIP_NUM_KERNELS_INFLIGHT
2. Moved kernelcount variable inside stream critical section

Change-Id: I51d24d0a2a109467209170de117a6d02ba4e308e


[ROCm/clr commit: 7be196de48]
2016-07-26 17:09:27 -05:00
Aditya Atluri d8ea207f61 Signal Fix: Changed global signal count to per stream signal count
1. The number of kernels that can use signals are increased to 128
2. The kernel count is now specific to the stream

Change-Id: Ie6d1aa3f437aad8f08c3333fe48bd3f46e551e60


[ROCm/clr commit: 2e754d27dc]
2016-07-26 14:03:51 -05:00
Aditya Atluri bb363f9d63 removed redundant signal destroy
Change-Id: Icf0cd76b2620d34c87cfb6c7a83049087c0a0bc4


[ROCm/clr commit: 524127b4a4]
2016-07-26 13:35:35 -05:00
Aditya Atluri e207805f81 Added re-fix for memcpy kernel sync
1. The patch uses HIP signal pools to sync between copy and kernel commands
2. The hsa_signal_create is removed
3. Left the redundant enqueueBarrier method just in case

Change-Id: I3dff3e8ee57fff3cd49bec802ff735ed128e5ca1


[ROCm/clr commit: 0232e6bbb4]
2016-07-26 09:22:59 -05:00
Rahul Garg 7a70966cb1 D2H and H2D unpinned memory transfer support
Change-Id: If6d6c970f435e5d917d5cc6cddc2ee2918cd1c37

Conflicts:
	src/hip_hcc.cpp


[ROCm/clr commit: d11d65d401]
2016-07-25 14:36:07 +05:30
Aditya Atluri 776ea7a1f0 Partial fix async after kernel launch signal issue
Change-Id: Ib48d6564379160035bded9493b93663fba361710


[ROCm/clr commit: 1704006bed]
2016-07-23 14:54:20 -05:00
pensun 2c945dba23 Add empty stubs for threadfence family routines, changes include:
- stubs and documentation in include/hcc_details/hip_runtime.h
    - stubs with "no-op" in src/hip_memory.cpp
    - document update in hip_kernel_language.md, add suggestions to
    disable L1 and L2 caches when using the threadfence routines.

Change-Id: Ic0753170f802003055bca9d7476d7f48817b98b7


[ROCm/clr commit: 6db08e5135]
2016-07-22 10:40:58 -05:00
Maneesh Gupta 64d0ffb404 Replace calls to ihipInit with use of HIP_INIT_API macro
Change-Id: Iabf7df79f0238a8ddffea4607fe945df36642850


[ROCm/clr commit: b485470819]
2016-07-22 15:46:55 +05:30
Maneesh Gupta 68b1a199c4 Fix using ATP markers
Change-Id: If2d04f80b580237426c569737551e2001a8cd35a


[ROCm/clr commit: dffed956fb]
2016-07-21 16:02:51 +05:30
Maneesh Gupta 997cb27be8 Merge branch 'hiparray' into amd-develop
Change-Id: I63ca7b1db7b593ac5cfb3fd7cd5d08d6e4075a4c


[ROCm/clr commit: 7d5cffdc17]
2016-07-21 12:29:56 +05:30
Aditya Atluri 2098afc04d added fix for signal overflow in kernels
Change-Id: Ie0b1f97f69b7d7b34e445f6f120472819be03a0e


[ROCm/clr commit: 77d7134619]
2016-07-19 13:51:44 -05:00
Maneesh Gupta 4e84678f27 Merge branch 'amd-develop' into amd-master
Change-Id: I04f85b207e15e66c1a546675dc0937726ee08362


[ROCm/clr commit: 2577b6158f]
2016-06-30 18:36:07 +05:30
Fan Cao eb0db4e549 Replace GPU agent with CPU agent properly for memory async copy API
ihipStream_t::copySync use GPU agent in memory async copy API, even
if the src/dst memory does not belong to GPU, which cause the hsa
runtime to choose a slower copy engine.

SWDEV-95191

Change-Id: If3cab3d493c0c96ed63721cdcf28247a1193887c


[ROCm/clr commit: dc0a787984]
2016-06-30 18:23:29 +05:30
Aditya Atluri cf3186cd63 moved half support to a source file
Change-Id: I7c09b41877e22c1b743dea25a585e5307427dafd


[ROCm/clr commit: 38720f8a4e]
2016-06-30 18:23:29 +05:30
7SK 308a0f7c31 NVCC_COMPAT
add support for both cuda compatible implementation and hcc(faster)
implementation with test

Change-Id: I79a22344f458391d7dffac5f147619a542e97e4e

[ROCm/clr commit: 54034e5048]
2016-06-28 09:36:06 +05:30
Maneesh Gupta 28915dd491 Merge branch 'amd-master' into amd-develop
[ROCm/clr commit: dca8fca8eb]
2016-06-24 21:13:11 +05:30
Rahul Garg 38987ce023 Included code to calculate value of maxThreadsPerMultiprocessor property
Change-Id: Ie7cad7442f36a7163e715048de5a309febc28664


[ROCm/clr commit: 226aa917e7]
2016-06-24 15:10:11 +05:30
Ben Sander 050430789c Grid-launch updates to 2.0 and cleanup of old.
_ Use fields from GRID_LAUNCH_20 structure
  (See USE_GRID_LAUNCH_20 define, currently set to 0)
  "1" will require HCC support.
- Remove old DISABLE_GRID_LAUNCH support.

Change-Id: I584ce648d217251789a6283cf27feb24cb7dc8d1


[ROCm/clr commit: e27b5cc927]
2016-06-21 23:24:38 -05:00
Maneesh Gupta a0006c5df0 default value of uninitialized dim3 elements should be 1
Change-Id: Idff38fac8dfca68f38f1714f8fdec64df2890a6a


[ROCm/clr commit: 2d50e4b9e0]
2016-06-20 10:13:46 +05:30
Aditya Atluri adace999e7 able to pass non-dim launch parm to kernel launch
Change-Id: I0411849a27efcba597a1a9aa08be179635e04988


[ROCm/clr commit: ffcfc95360]
2016-06-18 11:28:20 -05:00
Ben Sander a03c51dc9e Clean up old work-week and USE_* refs
Change-Id: I929c979fa085f8e5205194cbccca46e9b5516aa9


[ROCm/clr commit: 44d117ba63]
2016-06-17 15:18:57 -05:00
Aditya Atluri 1e390cd4af added tests for host math functions
Change-Id: I66a5c574a27190e32054586f07ecf20e1ff71292


[ROCm/clr commit: ba262ea855]
2016-06-17 15:05:33 -05:00
Aditya Atluri 6837ae644c added bessel nth order function
Change-Id: I18a64d894dda9330b39638535dfafd7ce31bb968


[ROCm/clr commit: 75fc024308]
2016-06-17 09:22:23 +05:30
Ben Sander c46b2e7450 NVCC improvements.
- Complete translation tables for cudaError <-> hipError_t.
- Remove some odd errors that were not correctly translated or not used.
- Add HIPCHECK_API to test infrastructure.  Used for negative testing
  an API ; if a mismatch occurs it shows the expected return error
  code.  Can also print a warning rather than error.
- Enable hipMemoryAllocate on NV system, and review error coded.
- Add hipErrorName to nvcc.

Change-Id: I680427dcf32a5796d5913cf9e7f3b4c6f6b91599

Conflicts:
	tests/src/CMakeLists.txt

Bug fixes and improved docs for hipFree and hipHostFree.

    - Passing NULL pointer initialized runtime and return hipSuccess
      (not an error like before).
    - add negative test for this. (hipMemoryAllocate, improved)
    - Match NVCC errors for invalid pointers, add to test.
    - Update hipFree and hipHostFree docs.
    - hipGetDevicePointer always set *devicePointer=NULL, even for
      invalid flags.
    - Gate shared memory usage on specific HCC work-week.

Change-Id: I533b4fd3280a3d6cdbf05eb768976f0c7506c012


[ROCm/clr commit: 6a2a140f34]
2016-06-16 06:13:51 +05:30
Aditya Atluri d01b51eab9 added more host functions and tests
Change-Id: I9904e65e14c5479ba33d836c5c0b763cb5af71e3


[ROCm/clr commit: c4e667cf90]
2016-06-15 11:45:19 -05:00
Aditya Atluri f56bda32bf added host device functions
Change-Id: I8f299752fb8dd8e8947da62e4ad88842c1c19f62


[ROCm/clr commit: bb02880a12]
2016-06-14 18:14:44 -05:00
Aditya Atluri 4d16bb272e added bessel zero and one order functions
Change-Id: I57039d54eae7207db00415bc7ba09bbf9cb6425a


[ROCm/clr commit: ce52a8f70c]
2016-06-14 11:50:48 +05:30
Aditya Atluri 657a1222d7 added erfinv software implementation
Change-Id: Ib1a5584f6c81ab3afa70f7bcbfd7780e156454e3


[ROCm/clr commit: 720fa16355]
2016-06-14 00:09:41 -04:00
Aditya Atluri 570eba42ae added more device functions
Change-Id: I191919060b393772ee442cc19d83479217c5a4ce


[ROCm/clr commit: ae96fe4d12]
2016-06-13 11:55:12 -05:00
Aditya Atluri 4e46d95dac added normcdf support
Change-Id: I4887bc588589ed067eaa339d5eccd988c1c5d649


[ROCm/clr commit: 20b991e99a]
2016-06-13 10:09:37 +05:30
Aditya Atluri d94fa903bf Added more device functions
1. Added copyright for device float test
2. Added device double functions support
3. Added device double functions test
4. Corrected device function signatures in headers

Change-Id: I13c8829682c925992f5cad84062bc9f702fe4048


[ROCm/clr commit: c7462bd524]
2016-06-10 09:46:31 -05:00
Aditya Atluri 0fce1ff505 added more float device functions
Change-Id: I106ce6de9ed8806b3699dcf0add9efc9e8583615


[ROCm/clr commit: 681c5fda12]
2016-06-10 06:22:00 -04:00
7SK 2c5530e9f2 fix_ldg
Change-Id: I53de5fa91b4f57d496ffe46787d197ae84dde4a4


[ROCm/clr commit: fda049fa5f]
2016-06-09 16:56:05 -04:00
Maneesh Gupta 21431b7ed9 Merge "Squashed commit of the following:" into amd-master
[ROCm/clr commit: cce19ad99a]
2016-06-07 12:52:21 -04:00
Maneesh Gupta 385112fb99 Use cpu agent when using staging buffer
Change-Id: I195a8137e86f2752681d6ba4dc7ba1b6f654e264


[ROCm/clr commit: b35fa83c47]
2016-06-06 12:42:44 +05:30
Jack Chung c12b4d931d Squashed commit of the following:
commit 9548493fa754b3bf5c31cbdc2211db1e73e8c07c
Author: Jack Chung <whchung@gmail.com>
Date:   Mon May 23 11:57:23 2016 +0800

    Rename hipExternShared test to hipDynamicShared

    Change-Id: I180d9d539420fb69cfc121eceaa7db9da03483b2

commit 827081f8244a38f010789d556db0c4ff7b6422d8
Author: Jack Chung <whchung@gmail.com>
Date:   Mon May 23 11:56:27 2016 +0800

    Rename HIP_DECLARE_EXTERN_SHARED to HIP_DYNAMIC_SHARED

    Change-Id: I22362d179812ac547e0f11ba4e2bb999050e08ae

commit 4c277228ed41af187739610fa17eab1fb144c947
Author: Jack Chung <whchung@gmail.com>
Date:   Thu May 19 17:49:52 2016 +0800

    Adopt new interface to get dynamic LDS in hc.hpp

    Change-Id: I47b433b714633a4c97df87c40a0b1d3386429a00

commit 5a36117d777064113a528dc47b42e8c8413baa97
Author: Jack Chung <whchung@gmail.com>
Date:   Thu May 19 11:29:24 2016 +0800

    Add test patterns for regular expression to match "extern __shared__"

    These test patterns should better be saved as an individual test case, but I'm
    not familiar with HIP test structures so I leave them as comments in hipify as
    of now.

    Change-Id: I7fee89c89b9e73de2133357a226ec0c769733531

commit 1b26284168c7f5339f63338fd0149bed5d994656
Author: Jack Chung <whchung@gmail.com>
Date:   Thu May 19 11:25:23 2016 +0800

    Add one HIP unit test to use HIP_DECLARE_EXTERN_SHARED

    Change-Id: I4d9907815920693a74ea9d575fe26e7c67636109

commit 77b816ee5972b13d829d5bbcf06fbfd07acea2af
Author: Jack Chung <whchung@gmail.com>
Date:   Wed May 18 19:18:59 2016 +0800

    Adopt HIP_ prefix for DECLARE_EXTERN_SHARED macro

    Change-Id: I555ded16b449b67d2e20904013d86fe1ded6a2be

commit ef0997939c3578a9ae11621bf21c0416f04d2622
Author: Jack Chung <whchung@gmail.com>
Date:   Wed May 18 17:42:04 2016 +0800

    Modify hipify to support converting extern __shared__ to DECLARE_EXTERN_SHARED macro

    Added regular expression to search & replace extern __shared__ declarations to
    DECLARE_EXTERN_SHARED macro.

    Limitation:
    - Won't work if "extern __shared__" is declared at global scope

    Sample Usages:
    extern __shared__ double foo[];
    extern __shared__ unsigned int foo[];
    extern volatile __shared__ double foo[];
    extern volatile __shared__ unsigned int sdata[];
    extern __shared__ volatile unsigned int sdata[];
    extern __shared__ T s[];
    extern __shared__ T::type s[];
    extern __shared__ blah<T>::type s[];
    extern __shared__ typename mapper<Float>::type s_data[];
    extern __attribute__((used)) __shared__ typename mapper<Float>::type s_data[];

    Change-Id: I2be0b7039adeddb789f5a2b067d403a43fdc3e26

commit 93ff268724493aedfacdcd5a5aa9a100f4ebaed0
Author: Jack Chung <whchung@gmail.com>
Date:   Wed May 18 15:13:09 2016 +0800

    Introduce DECLARE_EXTERN_SHARED macro to encapsulate "extern __shared__" decls

    Change-Id: I93b2d37c763195b0ca9fd0afee78605a1e3272db

commit cff9c95412de343cc6405158b5acc4f1029267ff
Author: Jack Chung <whchung@gmail.com>
Date:   Wed May 18 12:53:54 2016 +0800

    Add __get_dynamic_groupbaseptr() to point to dynamic LDS

    Change-Id: I97b548d8a691488057617c551a8f331cad7afc77

Change-Id: I84e7875b76fa1f59e860e19c93bd4209cdd1fd2c


[ROCm/clr commit: 65448e74ed]
2016-06-05 06:20:44 -04:00
Rahul Garg 5b74d1666a Update in clock function
Change-Id: I5819aa62693dc3b9b5d7e39944d1e58aadc72027


[ROCm/clr commit: 02a6c1fbe0]
2016-05-20 11:12:32 +05:30