Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/marian-nmt/nccl.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Addison <daddison@nvidia.com>2019-08-14 20:08:39 +0300
committerDavid Addison <daddison@nvidia.com>2019-08-14 20:08:39 +0300
commitfad079a8aeb72f4fb30f3564a48ad4ec37ea58f6 (patch)
tree45e399f0568e26cd57e28deeb892d4aca8093d60
parent01d1836668ad59bfc26d14aede5fec593da6ae42 (diff)
Updated PR#196 to use a common hash function
-rw-r--r--src/include/utils.h2
-rw-r--r--src/init.cc4
-rw-r--r--src/misc/utils.cc15
3 files changed, 6 insertions, 15 deletions
diff --git a/src/include/utils.h b/src/include/utils.h
index 3038e68..5acccc2 100644
--- a/src/include/utils.h
+++ b/src/include/utils.h
@@ -11,7 +11,7 @@
#include <stdint.h>
ncclResult_t getHostName(char* hostname, int maxlen, const char delim);
-uint64_t getnHash(const char* string, int n);
+uint64_t getHash(const char* string, int n);
uint64_t getHostHash();
uint64_t getPidHash();
diff --git a/src/init.cc b/src/init.cc
index 229742c..706d3a6 100644
--- a/src/init.cc
+++ b/src/init.cc
@@ -691,8 +691,8 @@ static ncclResult_t initTransportsRank(struct ncclComm* comm, ncclUniqueId* comm
int rank = comm->rank;
int nranks = comm->nRanks;
- uint64_t commHash = getnHash(commId->internal, NCCL_UNIQUE_ID_BYTES);
- TRACE(NCCL_INIT, "comm %p, commHash %lu, rank %d nranks %d - BEGIN", comm, commHash, rank, nranks);
+ uint64_t commHash = getHash(commId->internal, NCCL_UNIQUE_ID_BYTES);
+ TRACE(NCCL_INIT, "comm %p, commHash %lx, rank %d nranks %d - BEGIN", comm, commHash, rank, nranks);
NCCLCHECK(bootstrapInit(commId, rank, nranks, &comm->bootstrap));
// AllGather1 - begin
diff --git a/src/misc/utils.cc b/src/misc/utils.cc
index b511af1..da99774 100644
--- a/src/misc/utils.cc
+++ b/src/misc/utils.cc
@@ -87,18 +87,9 @@ void ncclDebugLog(ncclDebugLogLevel level, unsigned long flags, const char *file
}
}
-uint64_t getHash(const char* string) {
+uint64_t getHash(const char* string, int n) {
// Based on DJB2, result = result * 33 + char
uint64_t result = 5381;
- for (int c = 0; string[c] != '\0'; c++) {
- result = ((result << 5) + result) + string[c];
- }
- return result;
-}
-
-uint64_t getnHash(const char* string, int n) {
- // Based on DJB2, result = result * 33 + char
- uint64_t result = 9527;
for (int c = 0; c < n; c++) {
result = ((result << 5) + result) + string[c];
}
@@ -129,7 +120,7 @@ uint64_t getHostHash(void) {
uname[offset]='\0';
TRACE(NCCL_INIT,"unique hostname '%s'", uname);
- return getHash(uname);
+ return getHash(uname, strlen(uname));
}
/* Generate a hash of the unique identifying string for this process
@@ -149,7 +140,7 @@ uint64_t getPidHash(void) {
pname[plen+len]='\0';
TRACE(NCCL_INIT,"unique PID '%s'", pname);
- return getHash(pname);
+ return getHash(pname, strlen(pname));
}
int parseStringList(const char* string, struct netIf* ifList, int maxList) {