Commit Graph

13218 Commits

Author SHA1 Message Date
Chauncey Hui 97dd6c128b SWDEV-2 - Change OpenCL version number from 3243 to 3244 2021-01-15 03:00:06 -05:00
DURGESH KROTTAPALLI d27db0f038 [dtest] Kernel Execution time fix for hipExtLaunchKernelGGL and hipExtModuleLaunchKernel API's
Fix for kernel execution time using clock rate

SWDEV-238517 for enhancing hip unit tests

Change-Id: Id06df31387ecab96f219e0c1fbcdda1609f75605
2021-01-15 01:58:22 -05:00
David Salinas 7e9b9534d3 add new code object tooling: roc-obj-ls and roc-obj-extract
SWDEV-229776

Change-Id: Icb11c4552515d3eff3bcf303c4a470ab90d1dd58
2021-01-14 14:45:46 -05:00
Tao Sang 8fc1ff7d4f Fix building mathlibs failure
Add back
__HIP_PLATFORM_HCC__
__HIP_PLATFORM_NVCC__

Change-Id: I1ae48678eafd849d6c25bcb204c1724b026be22f
2021-01-14 14:03:15 -05:00
Saleel Kudchadker ce56d04dee Cleanup redundant Barrier packet fill function
Change-Id: I31f3250f00a362c2fdd35aca31df177fed7ddb98
2021-01-14 12:38:00 -05:00
Tony Tye 2026a24438 Make HSAILProgram::gpuNullDevice private
Change-Id: I822d1800eff0703a154dac997fe940d232eab542
2021-01-14 11:12:14 -05:00
Tony Tye c7e8d91e14 Update code object handling for GSL, PAL and ROCm
- Correct GSL path to report targets using the TargetID syntax.

- Correct GSL path to check compatibility of code objects when
  loading.

- Add concept of an device isa and create a registery used by ROCm,
  PAL and GSL.

- Support XNACK and SRAMECC target features consistently for PAL and ROCm.

- Correct logic for NullDevices and asserts to avoid memory coruption.

- Allow all NullDevices to be created for HIP.

- Numerous other code improvements.

Change-Id: I40abf3d2b22249c1492d1af5919665f8184f4e0e
2021-01-14 11:11:51 -05:00
Chauncey Hui 4c16051f6d SWDEV-2 - Change OpenCL version number from 3242 to 3243 2021-01-14 03:00:06 -05:00
Tony Tye 7d35a43165 Use ROCclr Info.targetId_
Use Info.targetId_ instead of Info.name_ so it will work on Windows
PAL driver and ROCm.

Change-Id: I20537899c36c0ee330a4c09136a52e53d9f35e0d
2021-01-14 05:17:20 +00:00
jujiang 32f35bbd2a SWDEV-265003-Update HIP documents
Change-Id: I3aea36f9a817ff0d2a379fc902b1ba7794f9736e
2021-01-13 17:55:16 -05:00
Tony Tye e0448535a3 Use strncpy
Use strncpy instead of strcpy to ensure the arrays will not be
overflowered. Only copy one less than size of char array to leave a
NUL character at the end even if the copy is truncated provided the
original object is zeroed memory.

Change-Id: I00f7679630cf28dcb9a51cb0aba2810a4f4c72b9
2021-01-13 08:24:28 +00:00
Tony Tye 76c371d78a Make hsa_agent_t handles use pointer to device::Device
For roc devices create hsa_agent_t handles using a pointer to the
device::Device. This ensures each device has a different hsa_agent_t
handle. This may be necessary to ensure the loader symbol lookup will
search only symbols for the correct device.

Change-Id: Iee6dd40d68bf22a02ce8c75cbe5ac8f5a0d9e418
2021-01-13 08:24:28 +00:00
Tony Tye 583dddf6b6 Simplify handling of Settings
roc:Settings and pal::Settings are derivations. Allocate them as their
derived class then assign that to the base class member to avoid the
need for a static_cast.

Use device::settings to access the Settings consistently.

Change-Id: I0f85157962fbf6fed176da0caf83b723bcbe1452
2021-01-13 08:24:28 +00:00
Tony Tye f92b060707 Use properties() method consistently in paldevice.cpp
Change-Id: I8074ecc283dde57bddfabf72a439bf6132ee900e
2021-01-13 08:24:28 +00:00
Tony Tye 682774a09d Refine sampler handling
- Use std::unique_ptr to levarage RAII for managing the allocation in
  the presence of errors.

Change-Id: I55de515bbf72938e1dd09731c5e51f538cf9d34a
2021-01-13 08:24:28 +00:00
Tony Tye 08f3126f6c Make roc::Device::getBackendDevice non-virtual
Make roc::Device::getBackendDevice non-virtual and only defined by
roc::Device and not roc::NullDevice. It is only meaningful for an
online device.

Change-Id: Ic333a3a42f650bea524e80dab587a34f1353e593
2021-01-13 08:24:28 +00:00
Tony Tye 783fe2e01b Delete roc::Program::hsaDevice
Delete roc::Program::hsaDevice and access directly from device
associated with program. This allows to be clear if the device is a
NullDevice which has no meaningful HSA agent backend device.

Change-Id: I81f96aff47bf9b8166d0ff6a5efc7c01f0fb6de3
2021-01-13 08:24:28 +00:00
Tony Tye c1ea70b539 Make roc::Device constructor and create() method private
Make roc::Device constructor and create() method private as creating
devices is performed by the factory static methods.

Change-Id: Ifa2edb8ec645b4ce6070c4aef355b9ef88294cf1
2021-01-13 08:24:28 +00:00
Tony Tye 30729a716f Check error return from aqlCreateHWInfo
Change-Id: If57c30d0605dc628d93a0d8131836ecde9834261
2021-01-13 08:24:28 +00:00
Tony Tye e5431676d4 Add stronger checking
- Add assertions to enforce that objects are of the correct kind and
  have been allocated.

- Make destructors check if objects have been allocated before
  deleting.

- Operations that require a non-NullDevice return failure if given a
  NullDevice.

- Use static_cast rather than reinterpret_cast when cohersing from a
  base class to a derived class.

Change-Id: I02ee0ea9d7982fd7ca29d49c9b02cfae111b7127
2021-01-13 08:24:28 +00:00
Tony Tye 001fd66cac Rename device access functions
Rename functions that access devices to reflect the derived device
they return. This includes the base device::Device and the derived
gpu/pal/roc device classes in both NullDevice and Device forms. Change
to use the least derived versions to clarify what operations will be
available.

Change-Id: I1abb6bfed7efa24852bc8d0d49acaea357d8b5d0
2021-01-13 08:24:28 +00:00
Tony Tye f679b05df7 Move declaration of kMaxAsyncQueues in rocdefs.h
Move declaration of kMaxAsyncQueues in rocdefs.h into the roc
namespace and adjacent to the other definitions.

Change-Id: Ibd319e3cc191945bacb9c06e1b31967717c1c87c
2021-01-13 08:24:28 +00:00
Tony Tye 8992f9e18d [NFC] Reorder some system includes alphebetically
Change-Id: I5245eb8482b447f6ce95e1c0b686d09ca7d20deb
2021-01-13 08:24:28 +00:00
Tony Tye 77268b2e60 Add virtual destructor to device::Settings
Add virtual destructor to device::Settings since derived classes are
allocated, but are deleted using the base class. This ensures the
descructors of the derived clsses will be executed if present.

Change-Id: I1f974b986193c60128009a768ec6b01b9deeacd5
2021-01-13 08:24:28 +00:00
Tony Tye a8d7e59dff [NFC] Move device::Info::targetId_ declaration
Move declaration of device::Info::targetId_ to be adjacent to the
other char* name fields.

Change-Id: Iefb249e801765a87b243a2a5e6997e78e817be2b
2021-01-13 08:24:28 +00:00
Tony Tye eb16dc5ef3 [NFC] Correct comments and line spacing
- Correct spelling mistakes or working in comments.
- Adding missing line separators.
- Add missing comments for namespace closing brace.

Change-Id: If09cdd38aa088b0f68f750dfdef81351eb8c4935
2021-01-13 08:24:28 +00:00
Tony Tye ed6d54b416 Ensure dump file names do not contain special characters
When TargetID is supported, the isa name will contain ':' characters
that are not legal in Windows file names. So replace all
non-aphanumeric or '+'/'-' characters with '_' to ensure the file name
will be legal on any file system.

Change-Id: I0b73a6188c186f75f1d2e8af19ade87667cbfe0b
2021-01-13 08:24:28 +00:00
Chauncey Hui dba4c06461 SWDEV-2 - Change OpenCL version number from 3241 to 3242 2021-01-13 03:00:06 -05:00
German Andryeyev 7d3aaa7a39 Explicit page table update on all devices
HMM with xnack enabled should automatically update page tables,
but currently it doesn't perform that. For now, runtime will
force page table update on all devices unconditionally.

Change-Id: Idfa6e1c145e6c114856214dce042b8a8349e5c58
2021-01-12 23:16:46 -05:00
Rahul Garg 66776ae8de Update dispatch latency with wall time measurements
Change-Id: I73bfed129171d6909b4638f714b694111b31ef56
2021-01-12 22:52:33 +00:00
Todd tiantuo Li e1c4b22a32 SWDEV-267762 - add RMB(gfx1035) to deviceQuery
Change-Id: I5388d9083a1b45751f024474ec4e0ae38e1e9107
2021-01-12 09:13:40 -08:00
Tao Sang 149254f7f8 Workarround for rocThrust building failure
Define the following for workarround of rocThrust building failure,
HIP_INCLUDE_HIP_HCC_DETAIL_DRIVER_TYPES_H
HIP_INCLUDE_HIP_HCC_DETAIL_HOST_DEFINES_H

Change-Id: I1ae48677eafd749d6c25bca204c1724b026be22f
2021-01-12 11:31:06 -05:00
Jason Tang 318eecfc87 Fix Windows 32bit build
Change-Id: Iab4a9a3f15c47d2c13d09ad098c52b21e078fd0a
2021-01-12 09:23:00 -05:00
Jason Tang 020da898b2 Remove incorrect assert
Change-Id: I7697c688c5c50a38d9d339971d4a03e9b57fcae4
2021-01-11 20:59:36 -05:00
Chauncey Hui e5b21c173c SWDEV-2 - Change OpenCL version number from 3240 to 3241 2021-01-11 16:57:11 -05:00
Tao Sang 12c976ef63 Fix failure for g++/hipMalloc test
Fix hardcoded /opt/rocm

Change-Id: I1ae48567eafd749d6c25bca204c1724b026be21f
2021-01-11 11:46:17 -05:00
Michael LIAO 6b9c1744e9 Remove checking on double.
- All conversions among floating point types should be allowed.

Change-Id: I6223bece51f5b2a535ab3369c5c4380f18acc74d
2021-01-11 11:33:33 -05:00
Tao Sang 4937fd7f0e Remove deprecated __HIP_ROCclr__
Change-Id: I19464fef82d5d24af7d4c46a80318a2922895bb8
2021-01-11 09:26:01 -05:00
Sameer Sahasrabuddhe 3558643c64 Identifiers with a double underscore "anywhere" are reserved
This particular cleanup is limited to just two functions defined in
the HIP headers.

Change-Id: Ib529685265f2fda90e009b24e7e756e0cf363012
2021-01-11 15:09:53 +05:30
Sameer Sahasrabuddhe e0ac6b4fc5 SWDEV-234709: redirect printf to stderr if specified by device code
The first qword in the printf messages is called the control
qword. If the LSB is set, then the output of the printf is now
redirected to stderr instead of stdout.

Change-Id: I391e04e6e8e0f231fda56f3a6e02703bf50e1924
2021-01-11 01:36:00 -05:00
Icarus Sparry 468929e539 Allow for /usr/bin/hipcc to be a symlink
SWDEV-267206

If /usr/bin/hipcc is a symlink then resolve it first, and then find
the resulting directory rather than resolving /usr/bin.

Change-Id: I380728ffa05ed813cc793a1d6488aaae81ddbda8
2021-01-11 00:50:20 -05:00
Saleel Kudchadker dab9ae32b2 Update documentation for hipEventCreateWithFlags
Change-Id: I2658bd95df0d3a802cce4ffcb8dfd40e7055b0f7
2021-01-08 16:32:57 -05:00
Rahul Garg 3829645039 Add IPC Events support
Change-Id: Iac2bf3d5e1d9a993bebbb066c20d300d6f05558b
2021-01-08 20:09:26 +00:00
German Andryeyev 8698aeef0d Add HSA signal global tracking logic.
Implement the global class for signals tracking per device queue.
Switch to the new tracking mechanism.

Change-Id: I3c4dda04b34e6d18d6a95510d84102909633b415
2021-01-08 12:57:33 -05:00
Tao Sang d504a761ad Remove hip-hcc codes: Part four
Remove __HCC__, __HCC_ONLY__, __HCC_CPP__, __HCC_C__,
__HCC_OR_HIP_CLANG__, __HIP_ROCclr__ and their guarded codes.

Remove Hcc codes from directed_tests and samples.

Remove __HIP_PLATFORM_HCC__ and __HIP_PLATFORM_NVCC__ from
some files where they are not necessary.

Add deprecation notice.

Change-Id: I1ae467eafd749d6c25bca204c1724b026be21fce
2021-01-08 10:53:34 -05:00
Satyanvesh Dittakavi a148a71075 SWDEV-264244 Fix StreamSync
Change-Id: I3a46a607a77aaf46dcd1fcf08db7e926613fe8d1
2021-01-08 02:06:31 -05:00
DURGESH KROTTAPALLI ec794ae051 [dtest] Tests for hipExtLaunchKernelGGL APIs
Added test scenarios for hipExtLaunchKernelGGL
1. verify kernel execution time using events
   passed through argument
2. Verify the API by disabling time flag in
   event creation.

SWDEV-238517 for enhancing hip unit tests

Change-Id: I755adc34a25c58b68041fc927bbffd2a9e6eafde
2021-01-08 00:16:54 -05:00
DURGESH KROTTAPALLI a57968fba9 [dtest] Tests for hipExtModuleLaunchKernel APIs
Added test scenarios for hipExtModuleLaunchKernel/hipModuleLaunchKernel APIs

 1. Negative Test Scenarios for hipExtModuleLaunchKernel API
 2. Negative Test Scenarios for hipModuleLaunchKernel API
 3. hipExtModuleLaunchKernel API Concurrency Verification
    using global variable
 4. hipExtModuleLaunchKernel API Concurrency Verification
    using total time taken by kernels.
 5. hipExtModuleLaunchKernel API verifying the kernel execution time
    of a particular kernel
 6. hipExtModuleLaunchKernel API verifying by disabling the
    time flag during event creation

SWDEV-238517 for enhancing hip unit tests

Change-Id: I33bbab152d47beba62065c461a07cbcacdc01d97
2021-01-08 00:05:57 -05:00
Rupam Chetia 5ba7259ffc [dtest] Enabling all negative tests for hipModule* APIs
Enabling all negative test cases for amd as they are functional now
SWDEV-238517 for enhancing hip unit tests

Change-Id: I0bdbf8c192ef94588403c8f027c0399dd5480a00
2021-01-07 23:50:56 -05:00
Rupam Chetia 328f8ab0ff [dtest] Additional tests for hipDevice APIs
APIs: hipDeviceGetAttribute(), hipGetDeviceProperties(),
      hipDeviceGetByPCIBusId() and hipDeviceGetPCIBusId()
1. New negative test cases for each API.
2. Additional attributes for testing with hipDeviceGetAttribute()

SWDEV-238517  Enhancing hip unit tests

Change-Id: I3c24462426ffaf3a9317b7de9cd33f7c65791a4b
2021-01-07 23:29:14 -05:00